#ifndef XEN_KEYCODES_HPP
#define XEN_KEYCODES_HPP

#include "xen/pch.hpp"

namespace Xen {

enum Keycode {
    XEN_UNKNOWN = SDL_SCANCODE_UNKNOWN,

    XEN_A = SDL_SCANCODE_A,
    XEN_B = SDL_SCANCODE_B,
    XEN_C = SDL_SCANCODE_C,
    XEN_D = SDL_SCANCODE_D,
    XEN_E = SDL_SCANCODE_E,
    XEN_F = SDL_SCANCODE_F,
    XEN_G = SDL_SCANCODE_G,
    XEN_H = SDL_SCANCODE_H,
    XEN_I = SDL_SCANCODE_I,
    XEN_J = SDL_SCANCODE_J,
    XEN_K = SDL_SCANCODE_K,
    XEN_L = SDL_SCANCODE_L,
    XEN_M = SDL_SCANCODE_M,
    XEN_N = SDL_SCANCODE_N,
    XEN_O = SDL_SCANCODE_O,
    XEN_P = SDL_SCANCODE_P,
    XEN_Q = SDL_SCANCODE_Q,
    XEN_R = SDL_SCANCODE_R,
    XEN_S = SDL_SCANCODE_S,
    XEN_T = SDL_SCANCODE_T,
    XEN_U = SDL_SCANCODE_U,
    XEN_V = SDL_SCANCODE_V,
    XEN_W = SDL_SCANCODE_W,
    XEN_X = SDL_SCANCODE_X,
    XEN_Y = SDL_SCANCODE_Y,
    XEN_Z = SDL_SCANCODE_Z,

    XEN_1 = SDL_SCANCODE_1,
    XEN_2 = SDL_SCANCODE_2,
    XEN_3 = SDL_SCANCODE_3,
    XEN_4 = SDL_SCANCODE_4,
    XEN_5 = SDL_SCANCODE_5,
    XEN_6 = SDL_SCANCODE_6,
    XEN_7 = SDL_SCANCODE_7,
    XEN_8 = SDL_SCANCODE_8,
    XEN_9 = SDL_SCANCODE_9,
    XEN_0 = SDL_SCANCODE_0,

    XEN_RETURN = SDL_SCANCODE_RETURN,
    XEN_ESCAPE = SDL_SCANCODE_ESCAPE,
    XEN_BACKSPACE = SDL_SCANCODE_BACKSPACE,
    XEN_TAB = SDL_SCANCODE_TAB,
    XEN_SPACE = SDL_SCANCODE_SPACE,

    XEN_MINUS = SDL_SCANCODE_MINUS,
    XEN_EQUALS = SDL_SCANCODE_EQUALS,
    XEN_LEFTBRACKET = SDL_SCANCODE_LEFTBRACKET,
    XEN_RIGHTBRACKET = SDL_SCANCODE_RIGHTBRACKET,
    XEN_BACKSLASH = SDL_SCANCODE_BACKSLASH,
    XEN_NONUSHASH = SDL_SCANCODE_NONUSHASH,
    XEN_SEMICOLON = SDL_SCANCODE_SEMICOLON,
    XEN_APOSTROPHE = SDL_SCANCODE_APOSTROPHE,
    XEN_GRAVE = SDL_SCANCODE_GRAVE,
    XEN_COMMA = SDL_SCANCODE_COMMA,
    XEN_PERIOD = SDL_SCANCODE_PERIOD,
    XEN_SLASH = SDL_SCANCODE_SLASH,

    XEN_CAPSLOCK = SDL_SCANCODE_CAPSLOCK,

    XEN_F1 = SDL_SCANCODE_F1,
    XEN_F2 = SDL_SCANCODE_F2,
    XEN_F3 = SDL_SCANCODE_F3,
    XEN_F4 = SDL_SCANCODE_F4,
    XEN_F5 = SDL_SCANCODE_F5,
    XEN_F6 = SDL_SCANCODE_F6,
    XEN_F7 = SDL_SCANCODE_F7,
    XEN_F8 = SDL_SCANCODE_F8,
    XEN_F9 = SDL_SCANCODE_F9,
    XEN_F10 = SDL_SCANCODE_F10,
    XEN_F11 = SDL_SCANCODE_F11,
    XEN_F12 = SDL_SCANCODE_F12,

    XEN_PRINTSCREEN = SDL_SCANCODE_PRINTSCREEN,
    XEN_SCROLLLOCK = SDL_SCANCODE_SCROLLLOCK,
    XEN_PAUSE = SDL_SCANCODE_PAUSE,
    XEN_INSERT = SDL_SCANCODE_INSERT,

    XEN_HOME = SDL_SCANCODE_HOME,
    XEN_PAGEUP = SDL_SCANCODE_PAGEUP,
    XEN_DELETE = SDL_SCANCODE_DELETE,
    XEN_END = SDL_SCANCODE_END,
    XEN_PAGEDOWN = SDL_SCANCODE_PAGEDOWN,
    XEN_RIGHT = SDL_SCANCODE_RIGHT,
    XEN_LEFT = SDL_SCANCODE_LEFT,
    XEN_DOWN = SDL_SCANCODE_DOWN,
    XEN_UP = SDL_SCANCODE_UP,

    XEN_NUMLOCKCLEAR = SDL_SCANCODE_NUMLOCKCLEAR,

    XEN_KP_DIVIDE = SDL_SCANCODE_KP_DIVIDE,
    XEN_KP_MULTIPLY = SDL_SCANCODE_KP_MULTIPLY,
    XEN_KP_MINUS = SDL_SCANCODE_KP_MINUS,
    XEN_KP_PLUS = SDL_SCANCODE_KP_PLUS,
    XEN_KP_ENTER = SDL_SCANCODE_KP_ENTER,
    XEN_KP_1 = SDL_SCANCODE_KP_1,
    XEN_KP_2 = SDL_SCANCODE_KP_2,
    XEN_KP_3 = SDL_SCANCODE_KP_3,
    XEN_KP_4 = SDL_SCANCODE_KP_4,
    XEN_KP_5 = SDL_SCANCODE_KP_5,
    XEN_KP_6 = SDL_SCANCODE_KP_6,
    XEN_KP_7 = SDL_SCANCODE_KP_7,
    XEN_KP_8 = SDL_SCANCODE_KP_8,
    XEN_KP_9 = SDL_SCANCODE_KP_9,
    XEN_KP_0 = SDL_SCANCODE_KP_0,
    XEN_KP_PERIOD = SDL_SCANCODE_KP_PERIOD,

    XEN_NONUSBACKSLASH = SDL_SCANCODE_NONUSBACKSLASH,
    XEN_APPLICATION = SDL_SCANCODE_APPLICATION,
    XEN_POWER = SDL_SCANCODE_POWER,

    XEN_KP_EQUALS = SDL_SCANCODE_KP_EQUALS,
    XEN_F13 = SDL_SCANCODE_F13,
    XEN_F14 = SDL_SCANCODE_F14,
    XEN_F15 = SDL_SCANCODE_F15,
    XEN_F16 = SDL_SCANCODE_F16,
    XEN_F17 = SDL_SCANCODE_F17,
    XEN_F18 = SDL_SCANCODE_F18,
    XEN_F19 = SDL_SCANCODE_F19,
    XEN_F20 = SDL_SCANCODE_F20,
    XEN_F21 = SDL_SCANCODE_F21,
    XEN_F22 = SDL_SCANCODE_F22,
    XEN_F23 = SDL_SCANCODE_F23,
    XEN_F24 = SDL_SCANCODE_F24,
    XEN_EXECUTE = SDL_SCANCODE_EXECUTE,
    XEN_HELP = SDL_SCANCODE_HELP,
    XEN_MENU = SDL_SCANCODE_MENU,
    XEN_SELECT = SDL_SCANCODE_SELECT,
    XEN_STOP = SDL_SCANCODE_STOP,
    XEN_AGAIN = SDL_SCANCODE_AGAIN,
    XEN_UNDO = SDL_SCANCODE_UNDO,
    XEN_CUT = SDL_SCANCODE_CUT,
    XEN_COPY = SDL_SCANCODE_COPY,
    XEN_PASTE = SDL_SCANCODE_PASTE,
    XEN_FIND = SDL_SCANCODE_FIND,
    XEN_MUTE = SDL_SCANCODE_MUTE,
    XEN_VOLUMEUP = SDL_SCANCODE_VOLUMEUP,
    XEN_VOLUMEDOWN = SDL_SCANCODE_VOLUMEDOWN,

    XEN_KP_COMMA = SDL_SCANCODE_KP_COMMA,
    XEN_KP_EQUALSAS400 = SDL_SCANCODE_KP_EQUALSAS400,

    XEN_INTERNATIONAL1 = SDL_SCANCODE_INTERNATIONAL1,

    XEN_INTERNATIONAL2 = SDL_SCANCODE_INTERNATIONAL2,
    XEN_INTERNATIONAL3 = SDL_SCANCODE_INTERNATIONAL3,
    XEN_INTERNATIONAL4 = SDL_SCANCODE_INTERNATIONAL4,
    XEN_INTERNATIONAL5 = SDL_SCANCODE_INTERNATIONAL5,
    XEN_INTERNATIONAL6 = SDL_SCANCODE_INTERNATIONAL6,
    XEN_INTERNATIONAL7 = SDL_SCANCODE_INTERNATIONAL7,
    XEN_INTERNATIONAL8 = SDL_SCANCODE_INTERNATIONAL8,
    XEN_INTERNATIONAL9 = SDL_SCANCODE_INTERNATIONAL9,
    XEN_LANG1 = SDL_SCANCODE_LANG1,
    XEN_LANG2 = SDL_SCANCODE_LANG2,
    XEN_LANG3 = SDL_SCANCODE_LANG3,
    XEN_LANG4 = SDL_SCANCODE_LANG4,
    XEN_LANG5 = SDL_SCANCODE_LANG5,
    XEN_LANG6 = SDL_SCANCODE_LANG6,
    XEN_LANG7 = SDL_SCANCODE_LANG7,
    XEN_LANG8 = SDL_SCANCODE_LANG8,
    XEN_LANG9 = SDL_SCANCODE_LANG9,

    XEN_ALTERASE = SDL_SCANCODE_ALTERASE,
    XEN_SYSREQ = SDL_SCANCODE_SYSREQ,
    XEN_CANCEL = SDL_SCANCODE_CANCEL,
    XEN_CLEAR = SDL_SCANCODE_CLEAR,
    XEN_PRIOR = SDL_SCANCODE_PRIOR,
    XEN_RETURN2 = SDL_SCANCODE_RETURN2,
    XEN_SEPARATOR = SDL_SCANCODE_SEPARATOR,
    XEN_OUT = SDL_SCANCODE_OUT,
    XEN_OPER = SDL_SCANCODE_OPER,
    XEN_CLEARAGAIN = SDL_SCANCODE_CLEARAGAIN,
    XEN_CRSEL = SDL_SCANCODE_CRSEL,
    XEN_EXSEL = SDL_SCANCODE_EXSEL,

    XEN_KP_00 = SDL_SCANCODE_KP_00,
    XEN_KP_000 = SDL_SCANCODE_KP_000,

    XEN_THOUSANDSSEPARATOR = SDL_SCANCODE_THOUSANDSSEPARATOR,
    XEN_DECIMALSEPARATOR = SDL_SCANCODE_DECIMALSEPARATOR,
    XEN_CURRENCYUNIT = SDL_SCANCODE_CURRENCYUNIT,
    XEN_CURRENCYSUBUNIT = SDL_SCANCODE_CURRENCYSUBUNIT,

    XEN_KP_LEFTPAREN = SDL_SCANCODE_KP_LEFTPAREN,
    XEN_KP_RIGHTPAREN = SDL_SCANCODE_KP_RIGHTPAREN,
    XEN_KP_LEFTBRACE = SDL_SCANCODE_KP_LEFTBRACE,
    XEN_KP_RIGHTBRACE = SDL_SCANCODE_KP_RIGHTBRACE,
    XEN_KP_TAB = SDL_SCANCODE_KP_TAB,
    XEN_KP_BACKSPACE = SDL_SCANCODE_KP_BACKSPACE,
    XEN_KP_A = SDL_SCANCODE_KP_A,
    XEN_KP_B = SDL_SCANCODE_KP_B,
    XEN_KP_C = SDL_SCANCODE_KP_C,
    XEN_KP_D = SDL_SCANCODE_KP_D,
    XEN_KP_E = SDL_SCANCODE_KP_E,
    XEN_KP_F = SDL_SCANCODE_KP_F,
    XEN_KP_XOR = SDL_SCANCODE_KP_XOR,
    XEN_KP_POWER = SDL_SCANCODE_KP_POWER,
    XEN_KP_PERCENT = SDL_SCANCODE_KP_PERCENT,
    XEN_KP_LESS = SDL_SCANCODE_KP_LESS,
    XEN_KP_GREATER = SDL_SCANCODE_KP_GREATER,
    XEN_KP_AMPERSAND = SDL_SCANCODE_KP_AMPERSAND,
    XEN_KP_DBLAMPERSAND = SDL_SCANCODE_KP_DBLAMPERSAND,
    XEN_KP_VERTICALBAR = SDL_SCANCODE_KP_VERTICALBAR,
    XEN_KP_DBLVERTICALBAR = SDL_SCANCODE_KP_DBLVERTICALBAR,
    XEN_KP_COLON = SDL_SCANCODE_KP_COLON,
    XEN_KP_HASH = SDL_SCANCODE_KP_HASH,
    XEN_KP_SPACE = SDL_SCANCODE_KP_SPACE,
    XEN_KP_AT = SDL_SCANCODE_KP_AT,
    XEN_KP_EXCLAM = SDL_SCANCODE_KP_EXCLAM,
    XEN_KP_MEMSTORE = SDL_SCANCODE_KP_MEMSTORE,
    XEN_KP_MEMRECALL = SDL_SCANCODE_KP_MEMRECALL,
    XEN_KP_MEMCLEAR = SDL_SCANCODE_KP_MEMCLEAR,
    XEN_KP_MEMADD = SDL_SCANCODE_KP_MEMADD,
    XEN_KP_MEMSUBTRACT = SDL_SCANCODE_KP_MEMSUBTRACT,
    XEN_KP_MEMMULTIPLY = SDL_SCANCODE_KP_MEMMULTIPLY,
    XEN_KP_MEMDIVIDE = SDL_SCANCODE_KP_MEMDIVIDE,
    XEN_KP_PLUSMINUS = SDL_SCANCODE_KP_PLUSMINUS,
    XEN_KP_CLEAR = SDL_SCANCODE_KP_CLEAR,
    XEN_KP_CLEARENTRY = SDL_SCANCODE_KP_CLEARENTRY,
    XEN_KP_BINARY = SDL_SCANCODE_KP_BINARY,
    XEN_KP_OCTAL = SDL_SCANCODE_KP_OCTAL,
    XEN_KP_DECIMAL = SDL_SCANCODE_KP_DECIMAL,
    XEN_KP_HEXADECIMAL = SDL_SCANCODE_KP_HEXADECIMAL,

    XEN_LCTRL = SDL_SCANCODE_LCTRL,
    XEN_LSHIFT = SDL_SCANCODE_LSHIFT,
    XEN_LALT = SDL_SCANCODE_LALT,
    XEN_LGUI = SDL_SCANCODE_LGUI,
    XEN_RCTRL = SDL_SCANCODE_RCTRL,
    XEN_RSHIFT = SDL_SCANCODE_RSHIFT,
    XEN_RALT = SDL_SCANCODE_RALT,
    XEN_RGUI = SDL_SCANCODE_RGUI,

    XEN_MODE = SDL_SCANCODE_MODE,

    XEN_AUDIONEXT = SDL_SCANCODE_AUDIONEXT,
    XEN_AUDIOPREV = SDL_SCANCODE_AUDIOPREV,
    XEN_AUDIOSTOP = SDL_SCANCODE_AUDIOSTOP,
    XEN_AUDIOPLAY = SDL_SCANCODE_AUDIOPLAY,
    XEN_AUDIOMUTE = SDL_SCANCODE_AUDIOMUTE,
    XEN_MEDIASELECT = SDL_SCANCODE_MEDIASELECT,
    XEN_WWW = SDL_SCANCODE_WWW,
    XEN_MAIL = SDL_SCANCODE_MAIL,
    XEN_CALCULATOR = SDL_SCANCODE_CALCULATOR,
    XEN_COMPUTER = SDL_SCANCODE_COMPUTER,
    XEN_AC_SEARCH = SDL_SCANCODE_AC_SEARCH,
    XEN_AC_HOME = SDL_SCANCODE_AC_HOME,
    XEN_AC_BACK = SDL_SCANCODE_AC_BACK,
    XEN_AC_FORWARD = SDL_SCANCODE_AC_FORWARD,
    XEN_AC_STOP = SDL_SCANCODE_AC_STOP,
    XEN_AC_REFRESH = SDL_SCANCODE_AC_REFRESH,
    XEN_AC_BOOKMARKS = SDL_SCANCODE_AC_BOOKMARKS,

    XEN_BRIGHTNESSDOWN = SDL_SCANCODE_BRIGHTNESSDOWN,
    XEN_BRIGHTNESSUP = SDL_SCANCODE_BRIGHTNESSUP,
    XEN_DISPLAYSWITCH = SDL_SCANCODE_DISPLAYSWITCH,

    XEN_KBDILLUMTOGGLE = SDL_SCANCODE_KBDILLUMTOGGLE,
    XEN_KBDILLUMDOWN = SDL_SCANCODE_KBDILLUMDOWN,
    XEN_KBDILLUMUP = SDL_SCANCODE_KBDILLUMUP,
    XEN_EJECT = SDL_SCANCODE_EJECT,
    XEN_SLEEP = SDL_SCANCODE_SLEEP,

    XEN_APP1 = SDL_SCANCODE_APP1,
    XEN_APP2 = SDL_SCANCODE_APP2,

    XEN_AUDIOREWIND = SDL_SCANCODE_AUDIOREWIND,
    XEN_AUDIOFASTFORWARD = SDL_SCANCODE_AUDIOFASTFORWARD,
};

}

#endif
